﻿namespace LogicStudio.Framework.UI.Excepciones
{
    using Controles;
    using System.ServiceModel.DomainServices.Client;

    /// <summary>
    /// Clase manipuladora de excepciones
    /// </summary>
    public static class ControladorExcepciones
    {
        /// <summary>
        /// Procesa una excepción
        /// </summary>
        /// <param name="operacion">
        /// Operación a validarse el error
        /// </param>
        /// <param name="titulo">
        /// Titulo a desplegarse en la ventana de error en el caso que exista
        /// </param>
        public static void Procesar(InvokeOperation operacion, string titulo)
        {
            if (operacion.HasError)
            {
                VentanaError.Crear(titulo, operacion.Error);
                operacion.MarkErrorAsHandled();
            }
        }

        /// <summary>
        /// Procesa una excepción
        /// </summary>
        /// <param name="operacion">
        /// Operación a validarse el error
        /// </param>
        /// <param name="titulo">
        /// Titulo a desplegarse en la ventana de error en el caso que exista
        /// </param>
        public static void Procesar(LoadOperation operacion, string titulo)
        {
            if (operacion.HasError)
            {
                VentanaError.Crear(titulo, operacion.Error);
                operacion.MarkErrorAsHandled();
            }
        }

        /// <summary>
        /// Procesa una excepción
        /// </summary>
        /// <param name="operacion">
        /// Operación a validarse el error
        /// </param>
        public static void Procesar(InvokeOperation operacion)
        {
            Procesar(operacion, string.Empty);
        }

        /// <summary>
        /// Procesa una excepción
        /// </summary>
        /// <param name="operacion">
        /// Operación a validarse el error
        /// </param>
        public static void Procesar(LoadOperation operacion)
        {
            Procesar(operacion, string.Empty);
        }
    }
}